<script setup>
import {inject} from 'vue'
// 接收顶层父组件传过来的普通对象,如果顶层组件和中间组件都传了相同的key，则取最近的父组件中key的值
// 语法：inject('key')
const count = inject('countKey');

// 底层组件不能修改父组件的值，只能通过父组件提供一个函数进行修改
const sonChangeCount = inject('sonChangeCount');

const changeCounts = ()=>{
  sonChangeCount(1000)
}

// 修改中间组件中数据的方法
const sonChangeCount2 = inject('sonChangeCount2')
const changeCounts2 = () =>{
  sonChangeCount2(500)
}
</script>

<template>
<div class="second-son">
  第二层组件
  <hr>
  跨组件从顶层父组件通过inject中获取到的值 {{count}}
<hr>
  <button @click="changeCounts">通过父组件提供的函数修改顶层父组件的值</button>
  <hr>
  <button @click="changeCounts2">修改中间组件中的值</button>
</div>
</template>

<style scoped>
.second-son {
  background: yellow;
  width: 200px;
  height: 200px;
}
</style>

